// #include<iostream>
// #include<vector>
// #include <sys/types.h>         
// #include <sys/socket.h>
// #include"TcpServer.hpp"
// #include"HttpProtocol.hpp"

// using namespace TcpServerModule;
// class Http 
// {
// private:
//   std::string GetMonthName(int month) 
//   {
//     std::vector<std::string> months = {"Jan", "Feb", "Mar", "Apr",
//                                        "May", "Jun", "Jul", "Aug",
//                                        "Sep", "Oct", "Nov", "Dec"};
//     return months[month];
//   }

//   std::string GetWeekDayName(int day) 
//   {
//     std::vector<std::string> weekdays = {"Sun", "Mon", "Tue", "Wed",
//                                          "Thu", "Fri", "Sat"};
//     return weekdays[day];
//   }

//   std::string ExpireTimeUseRfc1123(int t) // 秒级别的未来 UTC 时间
//   {
//     time_t timeout = time(nullptr) + t;
//     struct tm *tm = gmtime(&timeout); // 这里不能用 localtime，
//                                             // 因为 localtime 是默认带了时区的.gmtime 获取的就是 UTC
//     //统一时间 
//     char timebuffer[1024];
//                                             //时间格式如: expires=Thu, 18 Dec 2024 12:00:00 UTC
//     snprintf(timebuffer, sizeof(timebuffer),
//              "%s, %02d %s %d %02d:%02d:%02d UTC",
//              GetWeekDayName(tm->tm_wday).c_str(), tm->tm_mday,
//              GetMonthName(tm->tm_mon).c_str(), tm->tm_year + 1900, tm->tm_hour,
//              tm->tm_min, tm->tm_sec);
//     return timebuffer;
//   }

// public:
//   Http(uint16_t port) 
//   {
//       _tsvr = std::make_unique<TcpServer>(
//           port, std::bind(&Http::HandlerHttp, this, std::placeholders::_1));
//       _tsvr->InitServer();
//   }
//   std::string ProveCookieWrite() // 证明 cookie 能被写入浏览器
//   {
//     return "Set-Cookie: username=zhangsan;";
//   }
//   std::string ProveCookieTimeOut() {
//     return "Set-Cookie: username=zhangsan; expires=" +
//            ExpireTimeUseRfc1123(60) + ";"; // 让 cookie 1min 后过期
//   }
//   std::string ProvePath() {
//     return "Set-Cookie: username=zhangsan; path=/a/b;";
//   }
//   std::string HandlerHttp(std::string request) {
//     HttpRequest req;
//     req.Deserialize(request);
//     // req.DebugHttp();
//     // lg.LogMessage(Debug, "%s\n", ExpireTimeUseRfc1123(60).c_str());
//     HttpResponse resp;
//     resp.SetCode(200);
//     resp.SetDesc("OK");
//     resp.AddHeader("Content-Type: text/html");
//     // resp.AddHeader(ProveCookieWrite()); //测试 cookie 被写入与

//     // resp.AddHeader(ProveCookieTimeOut()); //测试过期时间的写入
//     resp.AddHeader(ProvePath()); // 测试路径

//     resp.AddContent("<html><h1>helloworld</h1></html>");
//     return resp.Serialize();
//   }
//   void Run() { _tsvr->Start(); }
//   ~Http() {}

// private:
//   std::unique_ptr<TcpServer> _tsvr;
// };